home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / make / icmake-6.000 / icmake-6 / icmake / comp / orboolea.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-08  |  852 b   |  33 lines

  1. /*
  2.                             O R B O O L E A . C
  3. */
  4.  
  5. #include "iccomp.h"
  6.  
  7. ESTRUC_ *or_boolean(lexp, rexp)
  8.     ESTRUC_
  9.         *lexp,
  10.         *rexp;
  11. {
  12.     if (lexp->type & rexp->type & e_const)  /* two constants: compute result */
  13.     {
  14.         lexp->evalue =
  15.             (test_type(lexp, e_str) || lexp->evalue)
  16.             ||
  17.             (test_type(rexp, e_str) || rexp->evalue);
  18.         set_type(lexp, e_const | e_int);
  19.     }
  20.     else                                    /* at least one code-part */
  21.     {
  22.         fetob(lexp);                        /* boolean code */
  23.         fetob(rexp);
  24.  
  25.         lexp->codelen -= rm_jmp_zero(lexp->codelen, lexp->falselist,
  26.                                     lexp->falselen);
  27.         patchup_false(lexp, 1);
  28.         lexp = catcode(lexp, rexp);
  29.         set_type(lexp, e_bool | e_code);
  30.     }
  31.  
  32.     return (lexp);
  33. }